/**
 * 
 */
package pt.inescid.components.api;

import java.util.List;
import java.util.Vector;

import pt.inescid.components.commons.Resources;

/**
 * @author Sergio Esteves (sesteves at gsd.inesc-id.pt)
 *
 */
public interface AppAdaptationLayerI {
	
	public String getDataLocation(String appID, List<String> input);
	
	public String getConfigLocation(String appID, List<String> input);
	
	public byte[] buildConfig(String appID, String configLocation, int n, int nTasks);
	
	public byte[] buildOutput(String appID, Vector<byte[]> slices);
	
	public boolean buildOutput(String appID, int index, String configLocation, String outputLocation);
	
	public Resources launchAppTrial(String appID, String configLocation, String dataLocation);
	
	public String launchApp(String appID, String configLocation, String dataLocation);
	
	public String launchApp(String appID, byte[] config, String outputLocation);
	
	public void createState(String appID, int index, String configLocation);
	
	public void updateState(String appID, int index, byte[] data);
	
	public String getConfigExt(String appID);
	
	public String getDataExt(String appID);
	
	public String[] getAppIDs();
	
	public boolean isStream(String appID);
}
